Matthias Clasen [Mon, 2 Aug 2021 03:18:27 +0000 (23:18 -0400)]
Add more label parsing tests
Test various combinations of underline and markup
parsing.
Matthias Clasen [Mon, 2 Aug 2021 02:14:12 +0000 (22:14 -0400)]
label: Ignore __ for mnemonics
We were not ignoring double underscores for mnemonics
in one place, as we should.
Fixes: #4129
Matthias Clasen [Mon, 2 Aug 2021 01:14:08 +0000 (01:14 +0000)]
Merge branch 'titlebar-gesture' into 'master'
Delegate titlebar action to the compositor if possible
See merge request GNOME/gtk!3797
Piotr Drąg [Sun, 1 Aug 2021 12:21:25 +0000 (14:21 +0200)]
Update Polish translation
Matthias Clasen [Sat, 31 Jul 2021 20:54:39 +0000 (20:54 +0000)]
Merge branch 'color-glyph-fixes' into 'master'
gsk: Make color glyphs
Closes #4141
See merge request GNOME/gtk!3812
Matthias Clasen [Sat, 31 Jul 2021 20:35:08 +0000 (20:35 +0000)]
Merge branch 'fix-iconhelper' into 'master'
iconhelper: Fix the paintable implementation
Closes #4140
See merge request GNOME/gtk!3809
Matthias Clasen [Sat, 31 Jul 2021 19:22:14 +0000 (15:22 -0400)]
gsk: Use harfbuzz for color fonts
harfbuzz has all the information we need, so we
can avoid poking directly at freetype apis. Also
drop the caching of color glyph information until
it turns out to be a problem.
Matthias Clasen [Sat, 31 Jul 2021 19:22:49 +0000 (15:22 -0400)]
Bump the harfbuzz dep
We need 2.1.0, which has the hb_ot_color apis that we
are going to use in the next commit.
Matthias Clasen [Sat, 31 Jul 2021 16:23:50 +0000 (12:23 -0400)]
gsk: Cache per-glyph color information
We don't really want to load the bitmaps every time
we create a render node, so do it once and cache the
information on the PangoFont.
Matthias Clasen [Sat, 31 Jul 2021 15:41:43 +0000 (11:41 -0400)]
ngl: Use per-glyph color information
Decide per-glyph whether we need color nor not.
Fixes: #4141
Matthias Clasen [Sat, 31 Jul 2021 15:41:08 +0000 (11:41 -0400)]
gsk: Mark color glyphs
Steal a bit from PangoGlyphVisAttr to mark glyphs
that have color.
Emmanuele Bassi [Sat, 31 Jul 2021 18:39:52 +0000 (18:39 +0000)]
Merge branch 'update-docs' into 'master'
docs: Update the URL for related documentation
See merge request GNOME/gtk!3813
Emmanuele Bassi [Sat, 31 Jul 2021 18:08:34 +0000 (19:08 +0100)]
docs: Update the URLs of related projects for GTK
And install the gi-docgen project file as well.
Emmanuele Bassi [Sat, 31 Jul 2021 18:07:18 +0000 (19:07 +0100)]
docs: Update the URLs of related projects for GSK
And install the gi-docgen project file.
Emmanuele Bassi [Sat, 31 Jul 2021 18:05:33 +0000 (19:05 +0100)]
docs: Update the URL for related documentation
And install the gi-docgen project files for GDK.
Emmanuele Bassi [Sat, 31 Jul 2021 17:16:26 +0000 (17:16 +0000)]
Merge branch 'docs-trigger' into 'master'
ci: Trigger a pages build
See merge request GNOME/gtk!3811
Emmanuele Bassi [Sat, 31 Jul 2021 16:08:56 +0000 (17:08 +0100)]
ci: Trigger a pages build
Do not publish the API reference directly, but trigger a CI pipeline for
the docs-gtk-org branch, which will then do the publishing.
Emmanuele Bassi [Sat, 31 Jul 2021 13:07:07 +0000 (13:07 +0000)]
Merge branch 'iter-is-valid-docs' into 'master'
docs: Fix iter_is_valid() description
See merge request GNOME/gtk!3810
Emmanuele Bassi [Sat, 31 Jul 2021 12:41:13 +0000 (13:41 +0100)]
docs: Fix iter_is_valid() description
Drop the "WARNING" and the block quote, and follow the existing
documentation style guidelines.
Matthias Clasen [Sat, 31 Jul 2021 11:46:54 +0000 (07:46 -0400)]
iconhelper: Fix the paintable implementation
get_current_image was recursing due to an obvious typo.
Fixes: #4140
Matthias Clasen [Sat, 31 Jul 2021 00:38:41 +0000 (00:38 +0000)]
Merge branch 'glyph-cache-mystery' into 'master'
ngl: Bypass pango for glyph cache rendering
See merge request GNOME/gtk!3807
Matthias Clasen [Fri, 30 Jul 2021 17:51:02 +0000 (13:51 -0400)]
ngl: Bypass pango for glyph cache rendering
We can just use cairo directly here,
and cut out some layers of pango in the middle.
Matthias Clasen [Fri, 30 Jul 2021 23:39:17 +0000 (23:39 +0000)]
Merge branch 'check-activate' into 'master'
checkbutton: Some fixes when used with GActions
See merge request GNOME/gtk!3805
Matthias Clasen [Fri, 30 Jul 2021 23:25:08 +0000 (23:25 +0000)]
Merge branch 'fix/wm_class' into 'master'
x11: set a default value for program_class
Closes #4138
See merge request GNOME/gtk!3806
Matthias Clasen [Fri, 30 Jul 2021 22:43:29 +0000 (22:43 +0000)]
Merge branch 'wip/otte/for-master' into 'master'
widget-factory: Expand the video to cover the whole frame
See merge request GNOME/gtk!3804
Vincent Bernat [Fri, 30 Jul 2021 21:21:19 +0000 (23:21 +0200)]
x11: set a default value for program_class
This was also the behaviour with GTK 3. We use the capitalized program
name.
Fixes #4138
Signed-off-by: Vincent Bernat <vincent@bernat.ch>
Benjamin Otte [Fri, 30 Jul 2021 18:54:58 +0000 (20:54 +0200)]
widget-factory: Propagate natural size for text styles
This avoids them requiring scrolling.
Benjamin Otte [Fri, 30 Jul 2021 18:41:30 +0000 (20:41 +0200)]
widget-factory: Make frames cooler
Instead of havoing a label for the video frame that clashes with the
background of the video, add a frame around the text styles box and add
a label for them. As a side benefit, it also makes it more obvious that
it is scrollable.
Note: Most of this patch is just reindenting.
Benjamin Otte [Fri, 30 Jul 2021 18:37:34 +0000 (20:37 +0200)]
widget-factory: Expand the video to cover the whole frame
1. This looks way cooler.
2. Since the frame is rounded, it adds a very visible test for our
clipping of rounded rectangles.
Florian Müllner [Fri, 30 Jul 2021 18:18:36 +0000 (20:18 +0200)]
checkbutton: Activate when moving focus
Currently we update the :active property on both the previous and
new focus button. That "visually activate" the button and will
emit ::toggled, but if the button is associated with an action,
the action state won't change.
Fix that by activating the new focus instead of explicitly fiddling
with the :active property.
Florian Müllner [Fri, 30 Jul 2021 05:40:48 +0000 (07:40 +0200)]
checkbutton: Delegate ::activate to the helper if appropriate
If the button is associated with an action, the action is currently
only activated when the button is clicked, not when it is activated.
Matthias Clasen [Fri, 30 Jul 2021 13:41:30 +0000 (13:41 +0000)]
Merge branch 'wip/chergert/fix-4134' into 'master'
textview: fix yoffset position when top_margin is set
Closes #4134
See merge request GNOME/gtk!3801
Christian Hergert [Thu, 29 Jul 2021 23:45:04 +0000 (16:45 -0700)]
textview: fix yoffset position when top_margin is set
This doesn't need to be included in the calculation or it will cause the
yoffset to continually shift while the window is resized.
Fixes #4134
Florian Müllner [Thu, 29 Jul 2021 02:00:22 +0000 (04:00 +0200)]
gtk/windowhandle: Delegate titlebar action to the compositor if possible
Delegating the action to the compositor not only improves consistency
with server-side decorations, but also allows for actions that aren't
available client-side (like lower-in-middle-click).
https://gitlab.gnome.org/GNOME/mutter/-/issues/602
Florian Müllner [Thu, 29 Jul 2021 01:55:36 +0000 (03:55 +0200)]
gdk/toplevel: Add gdk_toplevel_titlebar_gesture()
Where supported, this allows delegating the titlebar action to the
compositor instead of trying to replicate its behavior client-side.
https://gitlab.gnome.org/GNOME/mutter/-/issues/602
Matthias Clasen [Thu, 29 Jul 2021 11:59:02 +0000 (11:59 +0000)]
Merge branch 'source-static-name' into 'master'
Avoid copying static debug strings
See merge request GNOME/gtk!3789
Matthias Clasen [Wed, 28 Jul 2021 17:41:33 +0000 (13:41 -0400)]
ci: Collect tools test output
This should help understanding why some of them fail.
Matthias Clasen [Wed, 28 Jul 2021 17:21:03 +0000 (13:21 -0400)]
testsuite: Set TEST_RESULT_DIR for tools tests
Matthias Clasen [Mon, 26 Jul 2021 21:03:15 +0000 (17:03 -0400)]
Avoid copying static debug strings
The g_source_set_name calls were showing up as a
major source of strdups in our profiles. Avoid that
by using new GLib api when available.
Matthias Clasen [Wed, 28 Jul 2021 10:38:25 +0000 (10:38 +0000)]
Merge branch 'compose-parse-msvc' into 'master'
compose-parse.c: Include stdlib.h (fix build on Visual Studio)
See merge request GNOME/gtk!3794
Fabio Tomat [Wed, 28 Jul 2021 09:11:12 +0000 (09:11 +0000)]
Update Friulian translation
(cherry picked from commit
16aa8dbad74ac7dd29fa2e807e57c34f00eef3a7)
Chun-wei Fan [Wed, 28 Jul 2021 07:10:37 +0000 (15:10 +0800)]
compose-parse.c: Include stdlib.h
That is needed for exit(), and it may not have been included by the
other headers.
Emmanuele Bassi [Tue, 27 Jul 2021 17:38:28 +0000 (17:38 +0000)]
Merge branch 'gi-fix' into 'master'
gdk: add missing Since annotation
See merge request GNOME/gtk!3790
Marc-André Lureau [Tue, 27 Jul 2021 17:01:31 +0000 (21:01 +0400)]
gdk: add missing Since annotation
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Matthias Clasen [Tue, 27 Jul 2021 04:12:58 +0000 (04:12 +0000)]
Merge branch 'wip/otte/widgetfactory-dnd' into 'master'
Improve DND
See merge request GNOME/gtk!3785
Benjamin Otte [Mon, 26 Jul 2021 00:35:09 +0000 (02:35 +0200)]
widget-factory: Add images that support dnd
Just use the bottom left notebook for a GtkPicture with custom drag
source and drop target.
Matthias Clasen [Mon, 26 Jul 2021 14:48:42 +0000 (10:48 -0400)]
widget-factory: Some new backgrounds
Snowy wasn't ideal because of the aspect ratio.
Replace it by beach and nyc.
Benjamin Otte [Mon, 26 Jul 2021 00:34:18 +0000 (02:34 +0200)]
droptarget: Make formats construct-only writable
This way, it can be set in GtkBuilder.
Also make sure to only ever look at the GTypes set in the formats, as
GtkDropTarget cannot deal with mime types.
Benjamin Otte [Mon, 26 Jul 2021 00:33:54 +0000 (02:33 +0200)]
builder: Add support for GdkContentFormats
Benjamin Otte [Tue, 27 Jul 2021 01:25:15 +0000 (03:25 +0200)]
testsuite: Add contentformat tests
Benjamin Otte [Mon, 26 Jul 2021 00:33:31 +0000 (02:33 +0200)]
contentformats: Add gdk_content_formats_parse()
Matthias Clasen [Mon, 26 Jul 2021 18:21:56 +0000 (18:21 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
ngl: Cosmetics
See merge request GNOME/gtk!3786
Matthias Clasen [Mon, 26 Jul 2021 11:40:08 +0000 (07:40 -0400)]
ngl: Cosmetics
Use the macro we already have to check that colors
are fully transparent.
Matthias Clasen [Mon, 26 Jul 2021 11:51:14 +0000 (11:51 +0000)]
Merge branch 'wip/compose-parser' into 'master'
Clean up the GtkComposeTable api
See merge request GNOME/gtk!3746
Benjamin Otte [Mon, 26 Jul 2021 00:28:49 +0000 (02:28 +0200)]
contentformats: Change the format of gdk_content_formats_to_string()
Now, we just print a whitespace-separated list of GTypes and mime types.
This makes this neat for 2 things:
1. Parsing it (see next commit)
2. Using it in GtkBuilder (see commits after that)
In particular, the common case of supporting a single GType (or mime
type) looks like just printing the GType (or mime type), which in
GtkBuilder looks like
<property name="formats">GdkTexture</property>
Benjamin Otte [Mon, 26 Jul 2021 00:16:47 +0000 (02:16 +0200)]
dnd: Guard drags with a reference when finishing
Usually the "dnd-finished" signal will be used to unref the GdkDrag. In
those cases, we would lose the object, so that when we do the final
drag_drop_done() afterwards, we wouldn't have a remaining reference.
With the reference guard, this now works.
Matthias Clasen [Fri, 23 Jul 2021 21:14:24 +0000 (17:14 -0400)]
4.3.2
Matthias Clasen [Sun, 25 Jul 2021 02:03:46 +0000 (02:03 +0000)]
Merge branch 'misc-speedups' into 'master'
ngl: Speed up clipping calculations a bit
See merge request GNOME/gtk!3784
Matthias Clasen [Sat, 24 Jul 2021 22:44:33 +0000 (18:44 -0400)]
sizerequest: Simplify some code
Avoid some repeated MAX().
Matthias Clasen [Sat, 24 Jul 2021 22:41:09 +0000 (18:41 -0400)]
sizerequest: Keep branches in sync
There are some unintentional differences between
the path that uses a layout manager, and the path
that uses widget vfuncs. Sync them up.
Matthias Clasen [Fri, 23 Jul 2021 14:18:44 +0000 (10:18 -0400)]
widget: Avoid some unnecessary back-and-forth casting
Avoid some unnecessary casting and a redundant early exit.
Matthias Clasen [Fri, 23 Jul 2021 00:59:01 +0000 (20:59 -0400)]
widget: Avoid GObject data for action muxer
Most widget have an action muxer now, so just
store it in GtkWidgetPrivate.
Matthias Clasen [Fri, 23 Jul 2021 00:58:25 +0000 (20:58 -0400)]
layoutmanager: Avoid some overhead
Use inline getters for some things.
Matthias Clasen [Fri, 23 Jul 2021 00:53:49 +0000 (20:53 -0400)]
gridlayout: Avoid some unnecessary overhead
Use inline functions for some things.
Matthias Clasen [Sat, 24 Jul 2021 14:51:08 +0000 (10:51 -0400)]
gsk: Optimize gsk_transform_to...
Optimize these functions for the common cases.
Matthias Clasen [Sat, 24 Jul 2021 14:48:20 +0000 (10:48 -0400)]
gsk: Add a shortcut for a common transform case
Add a private getter for the translation part of a
transform node, to avoid pulling it out of the transform
over and over.
Matthias Clasen [Sat, 24 Jul 2021 13:49:09 +0000 (09:49 -0400)]
gsk: Add a private getter for container children
No need to get them one-by-one, in our inner loop.
Matthias Clasen [Sat, 24 Jul 2021 13:50:43 +0000 (09:50 -0400)]
ngl: Reduce type checking overhead
No need to be very careful here, these are entirely
internal types.
Matthias Clasen [Fri, 23 Jul 2021 14:19:16 +0000 (10:19 -0400)]
ngl: Speed up clipping calculations a bit
Exit as early as possible from intersect_rounded_rectilinear.
Piotr Drąg [Sat, 24 Jul 2021 12:38:51 +0000 (14:38 +0200)]
Update POTFILES.in
Emmanuele Bassi [Sat, 24 Jul 2021 11:45:00 +0000 (11:45 +0000)]
Merge branch 'no-pposition' into 'master'
gdk/x11: Do not set PPosition hint
See merge request GNOME/gtk!3781
Florian Müllner [Sat, 24 Jul 2021 04:32:16 +0000 (06:32 +0200)]
gdk/x11: Do not set PPosition hint
It is good practice for (floating) window managers to respect explicit
position hints from clients (as long as the window wouldn't end up
off-screen etc.).
Before commit
13d3afa56e9, GTK had a flag for setting the PPosition hint,
but now does so unconditionally. However the real intention is to *not*
request a fixed position, so don't do that.
Matthias Clasen [Fri, 23 Jul 2021 20:29:07 +0000 (20:29 +0000)]
Merge branch 'wip/exalm/gtktext-selection-fix' into 'master'
text: Use the widget y coordinate for gestures
See merge request GNOME/gtk!3780
Alexander Mikhaylenko [Fri, 23 Jul 2021 09:15:43 +0000 (14:15 +0500)]
text: Use the widget y coordinate for gestures
Currently we use layout coordinates and widget height when determining
where a click or drag has happened. If the widget has top padding (which it
does inside a GtkEntry, for example), the area where it's possible to select
text is shifted down, so the part of GtkText above the layout is not counted
as the draggable area and instead the equal area below the widget is counted.
Since GtkText is always single-line, there's no need to do any of that and
we can use widget coordinates. Then the draggable area matches the widget
and the problems goes away.
Matthias Clasen [Fri, 23 Jul 2021 14:25:29 +0000 (14:25 +0000)]
Merge branch 'stack-page-name' into 'master'
stack: GtkStackPage:name is not construct-only
Closes #4109
See merge request GNOME/gtk!3778
Matthias Clasen [Thu, 22 Jul 2021 21:22:55 +0000 (21:22 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Cosmetics
See merge request GNOME/gtk!3779
Matthias Clasen [Thu, 22 Jul 2021 21:02:21 +0000 (17:02 -0400)]
Cosmetics
Fix a comment typo.
Matthias Clasen [Thu, 22 Jul 2021 20:55:15 +0000 (16:55 -0400)]
stack: GtkStackPage:name is not construct-only
We have a setter for this property, so we clearly
weren't serious when we marked it as construct-only.
Fixes: #4109
Matthias Clasen [Thu, 22 Jul 2021 19:20:22 +0000 (19:20 +0000)]
Merge branch 'startup-profiling' into 'master'
Add more sysprof marks
See merge request GNOME/gtk!3777
Matthias Clasen [Thu, 22 Jul 2021 15:36:29 +0000 (11:36 -0400)]
Add more sysprof marks
Add a few more marks during gtk_init to figure out where
our startup time goes, and avoid the sysprof initialization
from distorting the first mark.
Matthias Clasen [Thu, 22 Jul 2021 17:04:27 +0000 (17:04 +0000)]
Merge branch 'startup-profiling' into 'master'
Add more sysprof marks
See merge request GNOME/gtk!3776
Matthias Clasen [Thu, 22 Jul 2021 15:36:29 +0000 (11:36 -0400)]
Add more sysprof marks
Add a few more marks during gtk_init to figure out where
our startup time goes, and avoid the sysprof initialization
from distorting the first mark.
Benjamin Otte [Thu, 22 Jul 2021 14:51:05 +0000 (14:51 +0000)]
Merge branch 'wip/otte/gleanup' into 'master'
reorganize GDK's GL code
See merge request GNOME/gtk!3726
Benjamin Otte [Thu, 22 Jul 2021 14:23:06 +0000 (16:23 +0200)]
glx: Get rid fo DrawableInfo
Store the frame counter in the surface, where it belongs.
Chun-wei Fan [Mon, 19 Jul 2021 09:13:53 +0000 (17:13 +0800)]
gdkdisplay-win32.c: Don't call ReleaseDC() unnecessarily
The dummy Win32 window that we use to capture display change events and
to create dummy WGL contexts was created with CS_OWNDC, so we really do
not need to (and should not) call ReleaseDC() on the HDC that we
obtained from it, so drop these calls.
Chun-wei Fan [Mon, 19 Jul 2021 02:48:03 +0000 (10:48 +0800)]
GDK-Win32: init_gl(): Default to WGL for now
Since the shaders need to be updated for using with GLES (libANGLE at
least), default to WGL for now. Unfortunately it is not that common for
Windows to have GLES support, in which the easiest way to obtain such
support is via Google's libANGLE.
Chun-wei Fan [Mon, 19 Jul 2021 02:32:28 +0000 (10:32 +0800)]
GDK-Win32: Fixup, and cleanup WGL HDC handling
It turns out that the problem of the WGL window not drawing was due to
the fact that I messed up where I placed SwapBuffers() during the
conversion... doh:|
At the same time, stop storing the HDC in the GdkWin32GLContextWGL, but
instead always create it along the surface we created, so that it is ready
for use for operating with WGL when we are not dealing with "surfaceless"
contexts. If we are dealing with "surfaceless" contexts, just use the
HDC of the dummy window that we created when we created the
Gdk(Win32)Display.
WGL contexts should now be in working order at this point.
Chun-wei Fan [Wed, 14 Jul 2021 09:46:31 +0000 (17:46 +0800)]
Split out WGL/EGL stuff and simplify things
This commit attempts to split GdkWin32GLContext into two parts, one for
WGL and the other for EGL (ANGLE), and attempts to simplify things a
bit, by:
* We are already creating a Win32 window to capture display changes,
so we can just use that to act as our dummy window that we use to
find out the pixel format that the system supports for WGL. We also
use it to obtain the dummy legacy WGL context that we will always
require to create our more advanced Core WGL contexts.
* Like what is done in X11, store up the WGL pixel format or the
EGLConfig in our GdkWin32Display.
* Ensure we do not create the dummy WGL context unnecessarily.
In this way, we can successfully create the WGL/EGL contexts, however
there are some issues at this point:
* For WGL, the code successfully initializes and realizes the WGL
Contexts, but for some reason things became invisible. When running
gtk4-demo, this can be verified by seeing the mouse cursor changing
when moved to spots where one can resize the window, although they
were invisible.
* For EGL, the code initializes EGL but could not realize the EGL
context as shaders failed to compile. It seems like the shader issue
is definitely outside the scope of this MR.
Benjamin Otte [Sat, 10 Jul 2021 00:29:17 +0000 (02:29 +0200)]
gl: Fix issue with EGL + nvidia
nvidia sets the default draw buffer to GL_NONE if EGL contexts are
initially bound to EGL_NO_SURFACE which is exactly what we are doing. So
bind them to GL_BACK when drawing, as they should be.
See https://phabricator.services.mozilla.com/
D118743 for a discussion
about EGL_NO_CONTEXT and draw buffers.
Chun-wei Fan [Wed, 14 Jul 2021 04:28:07 +0000 (12:28 +0800)]
GDK: Add debug option for WGL usage
This way, one can force using WGL on Windows even if EGL support was
enabled. Also update the help text for gl-egl as it will apply for
Windows, albeit a bit later.
Chun-wei Fan [Wed, 14 Jul 2021 04:19:52 +0000 (12:19 +0800)]
GDK-Win32: Move some functions out of gdkglcontext-win32.c
We want these to be out of the way as we split between WGL and EGL/ANGLE
GL contexts, so that they don't get in the way.
Benjamin Otte [Tue, 13 Jul 2021 03:23:41 +0000 (05:23 +0200)]
display: Move GL selection code into gdkdisplay-x11.c
This has the benefit that we can refactor it and make sure we deal with
GdkDisplay::init_gl() not being called at all because
GDK_DEBUG=gl-disable had been specified.
Benjamin Otte [Tue, 13 Jul 2021 03:04:45 +0000 (05:04 +0200)]
x11: Move code from GdkGLContextX11
It's not used there, but both backends have independent
immplementationgs for it.
I want to get rid of GdkGLContextX11 and moving code from it is the
first step.
Benjamin Otte [Fri, 9 Jul 2021 01:28:34 +0000 (03:28 +0200)]
inspector: Add support for displaying GL errors
Also, no need to show a GL version if GL isn't available.
Benjamin Otte [Fri, 9 Jul 2021 00:50:32 +0000 (02:50 +0200)]
gdk: Move GL context construction to GdkGLContext
Now that we have the display's context to hook into, we can use it to
construct other GL contexts and don't need a GdkSurface vfunc anymore.
This has the added benefit that backends can have different GdkGLContext
classes on the display and get new GLContexts generated from them, so
we get multiple GL backend support per GDK backend for free.
I originally wanted to make this a vfunc on GdkGLContextClass, but
it turns out all the abckends would just call g_object_new() anyway.
Benjamin Otte [Wed, 7 Jul 2021 02:40:34 +0000 (04:40 +0200)]
gl: Move vfunc
Instead of
Display::make_gl_context_current()
we now have
GLContext::clear_current()
GLContext::make_current()
This fits better with the backends (we can actually implement
clearCurrent on macOS now) and makes it easier to implement different GL
backends for backends (like EGL/GLX on X11).
We also pass a surfaceless boolean to make_current() so the calling code
can decide if a surface needs to be bound or not, because the backends
were all doing whatever, which was very counterproductive.
Benjamin Otte [Wed, 7 Jul 2021 01:00:09 +0000 (03:00 +0200)]
gl: Require EGL_KHR_surfaceless_context with egl
The code to create and manage a fake egl surface to bind to is
complex and completely untested because everyone seems to support this
extension.
nvidia and Mesa do support it and according to Mesa devs, adding support
in a new driver is rather simple and Mesa drivers gain that feature
automatically, so all future drivers shoould have it.
Benjamin Otte [Tue, 6 Jul 2021 02:50:01 +0000 (04:50 +0200)]
gdk: Get rid of paint contexts
... or more exactly: Only use paint contexts with
gdk_cairo_draw_from_gl().
Instead of paint contexts being the only contexts who call swapBuffer(),
any context can be used for this, when it's used with
begin_frame()/end_frame().
This removes 2 features:
1. We no longer need a big sharing hierarchy. All contexts are now
shared with gdk_display_get_gl_context().
2. There is no longer a difference between attached and non-attached
contexts. All contexts work the same way.
Benjamin Otte [Tue, 6 Jul 2021 02:47:15 +0000 (04:47 +0200)]
gl: Store the context::in-frame state in the current context
Do not treat the context as already current when the value
of context::in-frame changes.
This is so we can bind to EGL_NO_SURFACE if context::in-frame == false
and to context::surface if context::in-frame == true.
This allows getting rid of the attached property in future commits.
Benjamin Otte [Sat, 10 Jul 2021 01:24:00 +0000 (03:24 +0200)]
gl: Deprecate gdk_gl_context_get_shared_context()
It's not used anymore. And in particular we do want to keep the display
context private, so we're not gonna return it from this function.